const { Service } = require('egg');

class UserService extends Service {
  // 获取数据库中得数据
  async getUserList() {
    try {
      console.log('经历了user服务层');

      const UserList = await this.ctx.model.User.findAll();
      // console.log(UserList);
      // 判断有没有数据
      if (UserList) {
        this.ctx.body = {
          data: UserList,
        };
      } else {
        this.ctx.body = {
          code: 400,
          data: '数据获取失败，请联系管理员',
        };
      }
      return UserList;
    } catch (error) {
      // 获取失败
      console.log(error);
      return 'Server error';
    }
  }
  // 添加用户
  async addUser(data) {
    try {
      const { ctx } = this;
      const result = await this.app.model.User.create(data);
      // console.log(result);
      if (result.length === 1) {
        ctx.body = {
          code: 200,
          msg: '增加数据成功',
        };
      } else {
        this.ctx.body = {
          code: 400,
          msg: '增加数据失败',
        };
      }
      return result;

    } catch (error) {
      this.ctx.body = {
        code: 403,
        msg: '数据库操作失误',

      };
      return error;
    }
  }
  // 修改用户信息 根据id
  async updateUser(data, id) {
    try {
      const result = await this.ctx.model.User.findByPk(id);
      // const result2 = await this.ctx.model.User.update(data, { where: { id } });
      await result.update(data);
      return result;
    } catch (error) {
      console.log(error);
    }
  }
  // 根据id删除用户
  async deleteUser(id) {
    try {
      console.log('经历');
      // 删除之前先将这id对应的数据显示出来
      const result = await this.app.model.User.findByPk(id);
      if (result) {
        console.log(1);
        await result.destroy();
      } else {
        this.ctx.body = {
          code: 500,
          msg: '数据库无此用户',
        };
        return false;
      }

      return result;
    } catch (error) {
      return error;
    }
  }
  // 用户登录
  async userlogin() {
    const { ctx } = this;
    try {
      const { username, password } = ctx.request.body;

      const result = await this.app.model.Admin.findOne({
        where: {
          username,
          password,
        },
      });
      console.log(result);
      // 数据库查到的与前台传过来的进行比较，如果不对则不生成token
      if (result) {
        const token = ctx.app.jwt.sign({ username, password }, ctx.app.config.jwt.secret, { expiresIn: '1h' }); // token签名有效期1个小时;
        ctx.body = {
          code: 0,
          msg: '登陆成功',
          data: result,
          token,
        };
      } else {
        ctx.body = {
          code: 1, // 登陆失败
          msg: '密码或账号错误，请重试',
        };
      }
    } catch (error) {
      ctx.body = {
        code: 1,
        message: '用户验证失败,请重新获取token',
      };
    }
  }
}
module.exports = UserService;
